#ifndef ___fat32_admin_conexiones

#define ___fat32_admin_conexiones 1

#include "f32_econ.c"

unsigned int fat32_obtener_conexion_disponible(void);
void fat32_liberar_conexion_retenida(unsigned int);
void fat32_cerrar_conexion(unsigned int);
unsigned int fat32_conexiones_existentes(void);

unsigned int fat32_obtener_conexion_disponible (void) {
  unsigned short i;
  for (i = 0; i < fat32_cantidad_conexiones; i ++)
    if (fat32_estado_conexion(i) == ECON_LIBRE) {
      fat32_establecer_estado_conexion(i, ECON_EN_USO);
      return fat32_conexiones_disco[i];
    }
  return 0;
}

void fat32_liberar_conexion_retenida (unsigned int conexion) {
  unsigned short i;
  for (i = 0; i < fat32_cantidad_conexiones; i ++)
    if ((fat32_conexiones_disco[i] == conexion) && (fat32_estado_conexion(i) == ECON_EN_USO))
      fat32_establecer_estado_conexion(i, ECON_LIBRE);
}

void fat32_cerrar_conexion (unsigned int conexion) {
  unsigned short i;
  for (i = 0; i < fat32_cantidad_conexiones; i ++)
    if (fat32_conexiones_disco[i] == conexion)
      fat32_establecer_estado_conexion(i, ECON_CERRADA);
}

unsigned int fat32_conexiones_existentes (void) {
  unsigned short i, j;
  for (i = 0, j = 0; i < fat32_cantidad_conexiones; i ++)
    if (fat32_estado_conexion(i) != ECON_CERRADA) j ++;
  return j;
}

#endif